package metier.sess;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import metier.entities.Client;
import metier.entities.StatutLivraison;



@Stateless(name="StatutLivraison")
public class StatutLivraisonEJBImpl implements IStatutLivraisonLocal{
	@PersistenceContext(unitName="PU_Cargaison")
	private EntityManager em;

	@Override
	public void addStatutLivraison(StatutLivraison s) {
		em.persist(s);
		
	}

	@Override
	public List<StatutLivraison> getAllStatutLivraison() {
		Query req=em.createQuery("select s from StatutLivraison s");
		return req.getResultList();
	}

	@Override
	public StatutLivraison getStatutLivraison(Integer Id) {
		
		return em.find(StatutLivraison.class, Id);
	}

	@Override
	public void updateStatutLivraison(StatutLivraison s) {
		em.merge(s);
		
	}

	@Override
	public void deleteStatutLivraison(Integer Id) {
		em.remove(getStatutLivraison(Id));
		
	}

	@Override
	//cette méthode permet de récupérer la liste des statut de livraison selon le statut
	//TypeUser=0 pour transporteur
	//type
	public List<StatutLivraison> listeStatutLivraisonUserStatut(Client c,Integer statutOffre) {
		String a="";
		if(c.getTranExp().compareTo("Tra")==0)
		{
			a+="s.declaration.Transporteur.IdUtilisateur="+c.getIdUtilisateur();
		}
		else
		{
			a+="s.declaration.offre.Expediteur.IdUtilisateur="+c.getIdUtilisateur();
		}
		
		Query req=em.createQuery("select s from StatutLivraison s where  "+a+" and s.Statut="+statutOffre+" and s.declaration.offre.statutOffre!=6");
	    System.out.println("select s from StatutLivraison s where  "+a+" and s.Statut="+statutOffre+" and s.declaration.offre.statutOffre!=6");
		return req.getResultList();
	}
	
	//sélectionner la liste des statuts de livraison selon les critères suivants:IdVoyage,le statut 
	@Override
	public StatutLivraison listeStatutLovraisonIDVStatut(String IdVoyage,Integer Statut)
	{
		Query req=em.createQuery("select s from StatutLivraison s where IDVoyage='"+IdVoyage+"'  and  s.Statut="+Statut);
		if(req.getResultList().size()==0)
			return null;
	    return (StatutLivraison) req.getResultList().get(0);
	}

}
